package com.wuzheng.wisgo.sanitation.framework.criteria.parser;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.wuzheng.wisgo.sanitation.framework.criteria.CriteriaContext;
import com.wuzheng.wisgo.sanitation.framework.criteria.annotation.Eq;
import com.wuzheng.wisgo.sanitation.framework.util.StringUtils;

/**
 * @author：hibon
 * @date：Created in 2019/08/16
 * @description：等于条件解析
 * @modified By：
 * @version: 1.0
 */
public class EqParser extends AbstractGenericParser<Eq> {

    @Override
    public Object getDefaultValue(CriteriaContext<Eq> criteriaContext) {
        return criteriaContext.getType().defaultValue();
    }

    @Override
    public void doParse(CriteriaContext<Eq> criteriaContext, EntityWrapper entityWrapper, String column) {
        if (criteriaContext.getType().reverse()) {
            entityWrapper.ne(StringUtils.isNotBlank(String.valueOf(criteriaContext.getValue())), column,
                    criteriaContext.getValue());
        } else {
            entityWrapper.eq(StringUtils.isNotBlank(String.valueOf(criteriaContext.getValue())), column,
                    criteriaContext.getValue());
        }
    }

    @Override
    public String[] getColumns(CriteriaContext<Eq> criteriaContext) {
        return criteriaContext.getType().columns();
    }

    @Override
    public String getGroup(Eq eq) {
        return eq.group();
    }

    @Override
    public boolean allowEmpty(Eq eq) {
        return eq.allowEmpty() || StringUtils.isNotEmpty(eq.defaultValue());
    }

    @Override
    public boolean isEnable(Eq eq) {
        return eq.enable();
    }
}
